The latest BaBar measurements are published in two papers that point to exatly the same supplemental data
B. Aubert et al. [BaBar Collaboration], Phys. Rev. Lett. 103 (2009) 231801, inspirehep,
"Precise measurement of the e+ e- ---> pi+ pi- (gamma) cross section with the Initial State Radiation method at BABAR"
J. P. Lees et al. [BaBar Collaboration], Phys. Rev. D 86 (2012) 032013, inspirehep,
"Precise Measurement of the e+e−→π+π−(γ)e+e−→π+π−(γ) Cross Section with the Initial-State Radiation Method at BABAR"
The data report the "bare cross section including FSR" and in detail:
In the following the data are used to show a few plots.
library(repr, quietly=TRUE)
library(ggplot2, quietly=TRUE)
library(scales, quietly=TRUE)
library(RColorBrewer, quietly=TRUE)
library(latex2exp, quietly=TRUE)
library(rminuit2, quietly=TRUE)
library(Cairo, quietly=TRUE)
library(svglite, quietly=TRUE)
library(stringr, quietly=TRUE)
##
## open graphic device
##
my.width = 9
my.height = 5
my.width.pixels = 560
rc = try(dev.off(), silent=TRUE)
## rc = dev.new(width=my.width, height=my.height, dpi = my.width.pixels / my.width)
rc = dev.new(width=my.width, height=my.height, dpi = my.width.pixels / my.width)
##
## jupyter options
##
options(repr.plot.width=my.width, repr.plot.height = my.height, repr.plot.res = 100)
options(jupyter.plot_mimetypes = "image/svg+xml")
## options(jupyter.plot_mimetypes = "image/png")
##
## plot functions
## see http://t-redactyl.io/blog/2016/03/creating-plots-in-r-using-ggplot2-part-9-function-plots.html
##
##--- configure ggplot2 theme
theme_set(theme_bw(base_size = 15, base_family = "Helvetica"))
theme_update(
## plot.title = element_text(face="bold", vjust=1),
panel.background = element_rect(fill = "transparent",colour = NA),
plot.background = element_rect(fill = "transparent",colour = NA),
NULL
)
##
## save last plot
##
save_plot = function(name, plot = last_plot(), width=my.width, height=my.height, horiz.pixels=my.width.pixels) {
name = paste0("", name)
dpi = my.width.pixels/my.width
file.png = paste(name, "png", sep=".")
suppressWarnings(ggsave(filename=file.png, width=width, height=height, dpi=dpi, bg = "transparent"))
cat(file=stderr(), "file", file.png, "produced\n")
file.pdf = paste(name, "pdf", sep=".")
suppressWarnings(ggsave(filename=file.pdf, width=width, height=height, dpi=dpi, bg = "transparent"))
cat(file=stderr(), "file", file.pdf, "produced\n")
file.svg = paste(name, "svg", sep=".")
suppressWarnings(ggsave(filename=file.svg, width=width, height=height, dpi=dpi, bg = "transparent"))
cat(file=stderr(), "file", file.svg, "produced\n")
}
##--- get all data
babar09_lines = readLines("babar-2009/BABAR_ISR2pi_EPAPS.txt")
##--- get begin and end of data sections
babar09_beg = grep("^\\*\\*\\*\\*\\*\\*\\*\\*", babar09_lines)
babar09_end = c( tail(babar09_beg, -1), length(babar09_lines))
##--- get total systematic uncertainties
rc = str_match(babar09_lines[babar09_beg[2]:babar09_end[2]], "^\\s*(\\S+)\\s*:\\s*(\\S+)\\s+(\\S+)\\s+(\\S+)")
rc = rc[!is.na(rc[,1]), ]
df = data.frame(
E_l = as.numeric(rc[, 2]),
E_h = as.numeric(rc[, 3]),
sigma = as.numeric(rc[, 4]),
sigma_unc = as.numeric(rc[, 5])
)
df = within(df, {
E = (E_l+E_h)/2
})
##--- get low/high E bins limits
rc = str_match(babar09_lines[babar09_beg[3]:babar09_end[3]],
paste0("^\\s*", paste(rep("([^-]+)-([^-\\s]+)", 8), collapse="\\s+")))
rc = rc[!is.na(rc[,1]), ]
rc = as.numeric(tail(rc, -1))
df_syst = data.frame(
E_l = rc[seq(1, length(rc), 2)],
E_h = rc[seq(2, length(rc), 2)]
)
##--- get permil systematic uncertainty
rc = str_match(babar09_lines[babar09_beg[3]:babar09_end[3]],
paste0("^\\s*", paste(rep("\\(([^\\)]+)\\)", 8), collapse="\\s+")))
rc = rc[!is.na(rc[,1]), ]
df_syst$unc_permil = as.numeric(tail(rc, -1))
df_syst
##--- get statistical covariance
rc = str_match(babar09_lines[babar09_beg[4]:babar09_end[4]], "^\\s*([0-9\\.Ee\\+\\-]+)")
rc = as.numeric(rc[!is.na(rc[,1]), -1])
stat_cov = matrix(rc, nrow=nrow(df), ncol=nrow(df))
## str(stat_cov)
df_stat = expand.grid(E_x=df$E, E_y=df$E)
df_stat$unc = rc
## str(df_stat)
##
## plot sigma(e+e- -> pi+pi-)
##
ggplot(df, aes(x = E, y = sigma)) +
ggtitle(TeX("$e^+e^- - \\pi^+\\pi^- (\\gamma)$")) +
geom_point(size=1) +
geom_errorbar(aes(ymin=sigma-sigma_unc, ymax=sigma+sigma_unc)) +
scale_x_continuous(name = TeX("E \\[GeV\\]"), breaks=pretty_breaks(7)) +
scale_y_continuous(name = TeX("$d\\sigma/dE$"),
breaks=pretty_breaks(7)) +
NULL
save_plot("babar09-pippim")
getOption("jupyter.plot_mimetypes")
##
## plot sigma(e+e- -> pi+pi-) at rho peak
##
ggplot(df, aes(x = E, y = sigma)) +
ggtitle(TeX("$e^+e^- \\rightarrow \\pi^+\\pi^- (\\gamma)$")) +
geom_point(size=1) +
geom_errorbar(aes(ymin=sigma-sigma_unc, ymax=sigma+sigma_unc)) +
scale_x_continuous(name = TeX("E \\[GeV\\]"), breaks=pretty_breaks(7)) +
scale_y_continuous(name = TeX("$d\\sigma/dE$"), breaks=pretty_breaks(7)) +
coord_cartesian(xlim=c(0.65, 0.85)) +
NULL
##
## plot statistical correlation at the rho peak
##
Emin = 0.6
Emax = 0.85
df_stat_rhopeak = subset(df_stat, E_x >= Emin & E_x <= Emax & E_y >= Emin & E_y <= Emax)
ggplot(df_stat_rhopeak, aes(x=E_x, y=E_y, unc)) + geom_tile(aes(fill = unc)) +
ggtitle(TeX("$e^+e^- \\rightarrow \\pi^+\\pi^- (\\gamma)$ statistical covariance")) +
scale_fill_gradient(low="white", high="steelblue") +
NULL